/*
* Copyright 2012-2016 Nikolay A. Viguro
* <p/>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ru.iris.common.voice;
import com.amazonaws.auth.AWSCredentials;
import com.ivona.services.tts.IvonaSpeechCloudClient;
import com.ivona.services.tts.model.CreateSpeechRequest;
import com.ivona.services.tts.model.CreateSpeechResult;
import com.ivona.services.tts.model.Input;
import com.ivona.services.tts.model.Voice;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.iris.common.Config;
import java.io.IOException;
import java.io.InputStream;
public class IvonaSynthesiser implements Synthesiser {
final Config cfg = Config.getInstance();
private final Logger LOGGER = LogManager.getLogger(IvonaSynthesiser.class);
public void setLanguage(String languageCode) {
}
public InputStream getMP3Data(String synthText) throws IOException {
AWSCredentials credentials = new AWSCredentials() {
@Override
public String getAWSAccessKeyId() {
return cfg.get("ivonaAccessKey");
}
@Override
public String getAWSSecretKey() {
return cfg.get("ivonaSecretKey");
}
};
IvonaSpeechCloudClient speechCloud = new IvonaSpeechCloudClient(credentials);
speechCloud.setEndpoint("https://tts.eu-west-1.ivonacloud.com");
CreateSpeechRequest createSpeechRequest = new CreateSpeechRequest();
Input input = new Input();
Voice voice = new Voice();
voice.setName(cfg.get("ivonaVoice"));
input.setData(synthText);
createSpeechRequest.setInput(input);
createSpeechRequest.setVoice(voice);
InputStream in = null;
try {
CreateSpeechResult createSpeechResult = speechCloud.createSpeech(createSpeechRequest);
LOGGER.debug("Success sending request:");
LOGGER.debug(" content type:\t" + createSpeechResult.getContentType());
LOGGER.debug(" request id:\t" + createSpeechResult.getTtsRequestId());
LOGGER.debug(" request chars:\t" + createSpeechResult.getTtsRequestCharacters());
LOGGER.debug(" request units:\t" + createSpeechResult.getTtsRequestUnits());
System.out.println("\nStarting to retrieve audio stream:");
in = createSpeechResult.getBody();
return in;
} finally {
if (in != null) {
in.close();
}
}
}
}